package com.an.common.enums;

import com.an.common.constant.BlogConstants;
import com.an.common.constant.MqConstants;
import com.an.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 文章 ES 操作类型
 *
 * @author Ann
 * @date 2024/06/29
 */
@Getter
@AllArgsConstructor
public enum ArticleEsOperationType {

    /**
     * 插入
     */
    INSERT(BlogConstants.ARTICLE_INSERT, MqConstants.ARTICLE_EXCHANGE,MqConstants.ARTICLE_INSERT_KEY),

    /**
     * 更新
     */
    UPDATE(BlogConstants.ARTICLE_UPDATE,MqConstants.ARTICLE_EXCHANGE,MqConstants.ARTICLE_UPDATE_KEY),

    /**
     * 删除
     */
    DELETE(BlogConstants.ARTICLE_DELETE,MqConstants.ARTICLE_EXCHANGE,MqConstants.ARTICLE_DELETE_KEY);


    /**
     * 方法
     */
    final String method;
    /**
     * 交换机
     */
    final String exchange;
    /**
     * 钥匙
     */
    final String key;

    /**
     * 查找操作类型
     *
     * @param method 方法
     * @return {@link ArticleEsOperationType }
     * @author Ann
     * @date 2024/06/29
     */
    public static ArticleEsOperationType findOperationType(String method){
        if(StringUtils.isBlank(method)){
            return null;
        }
        for (ArticleEsOperationType value : values()) {
            if(value.getMethod().equals(method)){
                return value;
            }
        }
        return null;
    }
}
